home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
program
/
qlib205.zip
/
QLIB.ZIP
/
C
/
READLN.H
< prev
Wrap
Text File
|
1997-01-09
|
1KB
|
66 lines
// used by PASM and iASM
void readln(void) {
byte a=0;
word p=0;
word t;
byte f1,f2;
#ifdef DEBUG3
printf("(readon)");
#endif
while (a!=10) {
if (!bufis[ch]) {
t=read(h,bufin[ch],bufsiz);
bufis[ch]=t;
if (!t) {
EOFF[ch]=1;
buf[p]=0;
#ifdef DEBUG3
printf("(readoff)");
#endif
return;
}
bufip[ch]=0;
}
a=*(bufin[ch]+(bufip[ch]++));
bufis[ch]--;
buf[p++]=a;
if (p>200) error("Line too long (200)");
if (a==13) buf[p-1]=0;
}
buf[p]=0;
//convert 9 to 32
f1=0; //inside ''
f2=0; //inside ""
p=0;
while (buf[p]) {
a=buf[p];
#ifdef IASM
if (f1) {
if ( a=='\'' ) {
if ( buf[p+1] =='\'') {p+=2;continue;}
f1=0;p++;continue;
}
}
#endif
if (f2) {
if ( a=='\"' ) {
if ( buf[p+1] =='\"') {p+=2;continue;}
f2=0;p++;continue;
}
}
if (a==9) if ((!f1)&&(!f2)) {buf[p++]=32;continue;} //convert 9 to 32
if ((f1) || (f2)) {p++;continue;}
#ifdef IASM
if ( a=='\'' ) f1=1;
#endif
if ( a=='\"' ) f2=1;
p++;
}
bufln[ch]++;
#ifdef DEBUG3
printf("(readoff)");
#endif
}